package cn.xiaolang.function.digit_operate;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import org.junit.Test;

public class NumberOperate {
    /**
     * 保留两位小数的操作
     */
    @Test
    public void keep2space(){
        double f = 0.1112315585;
        /**
         * 1.转换为高精度数据类型，进行处理，保留2位小数，四舍五入：111231.56
         * BigDecimal.ROUND_CEILING : 111231.56
         * BigDecimal.ROUND_FLOOR : 111231.55
         * ...
         */
        BigDecimal bigDecimal = new BigDecimal(f);//把给定的数据类型转换为高精度数据类型
        System.out.println(bigDecimal.setScale(2, BigDecimal.ROUND_CEILING).doubleValue());
        /**
         * 2.DecimalFormat的格式化（十进制处理格式化）简便：111231.56
            0 一个数字 
            # 一个数字，不包括 0 
            . 小数的分隔符的占位符 
            , 分组分隔符的占位符 
            ; 分隔格式。 
            - 缺省负数前缀。 
            % 乘以 100 和作为百分比显示 
            ? 乘以 1000 和作为千进制货币符显示；用货币符号代替；如果双写，用 
                            国际货币符号代替。如果出现在一个模式中，用货币十进制分隔符代 
                            替十进制分隔符。 
            X 前缀或后缀中使用的任何其它字符，用来引用前缀或后缀中的特殊字符。 
         * 
         */
        DecimalFormat decimalFormat = new DecimalFormat("#%");
        System.out.println(decimalFormat.format(f));
        /**
         * 3.String.format （打印方便），需要转换：111231.56
         */
        System.out.println(String.format("%.2f", f));
        /**
         * 4.用NumberFormat设置小数的最大位置进行格式化：111,231.56
         */
        NumberFormat numberFormat = NumberFormat.getNumberInstance();
        numberFormat.setMaximumFractionDigits(2);
        System.out.println(numberFormat.format(f));
    }
}
